﻿namespace EmbeddedSharp.Core {

    /// <summary>
    /// ILexer
    /// </summary>
    public interface ILexer {

        /// <summary>
        /// Returns next token
        /// </summary>
        /// <returns></returns>
        Token NextToken();

        Token NextToken(params TokenType[] expectedTokenType);

        Token NextToken(params string[] expectedTokenType);

        char NextChar();

        string NextLine();

        Token PeekToken();

        Token PeekToken(int offset);

        string ReadUntil(params char[] terminalChar);

        string ReadUntil(params string[] tokens);

        string ReadUntil(params TokenType[] token);
    }
}
